<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>灵活控制属性特征</title>
</head>
<body>
    
</body>
<script>
    let arr = [1,2,5,4]
    console.log(arr.length)  // 4
    /*
        就像以上的这个例子 有的对象有length这个属性 但是我们在遍历的时候 其实是只能遍历出键值却不能遍历出这个属性
            这个实际上是因为JS将这个对象的length属性给进行了特殊的设置

            我们也可以手动的设置的
    */
    let obj = {
        name:'jimmy',
        age:22
    }

    // 使用Object.defineProperty(对象名,'属性名',{配置细节})
    Object.defineProperty(obj,'name',{
        value:'jimmy',  //属性值
        writable:false,  //可否被修改
        enumerable:false,  //可否被遍历
        configurable:false  //可否被配置 包括删除/修改等等
    })
    obj.name = 'xuexue' //{age: 22, name: "jimmy"} 因为name属性的修改值哪里设置了false  所以这里修改不了name的属性值
    console.log(obj)
    console.log(Object.keys(obj))  // ["age"] 因为name属性的遍历哪里设置了false  所以遍历不到
</script>
</html>